package repositories

import (
	"log"
	"qimo_work/config"
	"qimo_work/models"

	"gorm.io/gorm"
)

// PostRepository 结构体
type PostRepository struct {
	DB *gorm.DB
}

// NewPostRepository 创建新的 PostRepository 实例
func NewPostRepository() *PostRepository {
	return &PostRepository{DB: config.DB} // 修改为 config.DB（gorm V2）
}

// SearchPosts 搜索文章，支持按标题和分类过滤，并分页
func (repo *PostRepository) SearchPosts(title string, categoryID uint, page, pageSize int) ([]models.Post, int64, error) {
	var posts []models.Post
	var total int64
	offset := (page - 1) * pageSize
	query := repo.DB.Model(&models.Post{})

	// 关键字搜索（模糊匹配）
	if title != "" {
		query = query.Where("title LIKE ?", "%"+title+"%")
	}

	// 分类筛选（0 表示不过滤分类）
	if categoryID > 0 {
		query = query.Where("category_id = ?", categoryID)
	}

	// 计算总数
	if err := query.Count(&total).Error; err != nil {
		log.Println("Error counting posts:", err)
		return nil, 0, err
	}

	// 分页查询
	if err := query.Limit(pageSize).Offset(offset).Find(&posts).Error; err != nil {
		log.Println("Error fetching posts:", err)
		return nil, 0, err
	}

	return posts, total, nil
}
